package com.example.sdk_test_demo;

import com.mchsdk.paysdk.GPExitResult;
import com.mchsdk.paysdk.GPUserResult;
import com.mchsdk.paysdk.IGPExitObsv;
import com.mchsdk.paysdk.IGPUserObsv;
import com.mchsdk.paysdk.MCApiFactory;
import com.mchsdk.paysdk.payCallback;
import com.mchsdk.paysdk.entity.OrderInfo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import cn.swiftpass.wxpay.R;

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById(R.id.login);
		findViewById(R.id.btnPay).setOnClickListener(myOnlickListener);
		findViewById(R.id.btnExit).setOnClickListener(myOnlickListener);
		findViewById(R.id.login).setOnClickListener(myOnlickListener);
		findViewById(R.id.btnfloat).setOnClickListener(myOnlickListener);
		findViewById(R.id.btnfloat).setVisibility(View.GONE);
		/** exitFromPersonInfo个人中心里面点击退出登录执行的退出回调接口 **/
		MCApiFactory.getMCApi().initExitFromPersonInfoTargetActivity(exitFromPersonInfo);
		/** 第一个参数为点击个人中心退出个人中心界面之后跳转的activity */
		/** exitFromPersonInfo个人中心里面点击退出登录执行的退出回调接口 */
		MCApiFactory.getMCApi().initExitFromPersonInfoTargetActivity(MainActivity.class,null);
		/** 上面两个方法，根据实际需要，添加或者不添加，如果两个方法都不执行的话，点击个人中心的退出登录之后程序会返回到桌面 **/
		// 渠道id 渠道名称 游戏id 游戏名称 游戏appid
		MCApiFactory.getMCApi().initTestParams("0", "默认渠道", "559", "花千骨","ACEA19808C80440CE");
		/** 渠道信息读取顺序，真实打包 > 这里填写的测试信息 > sdk里面的测试参数 */
		
		//MCApiFactory.getMCApi().sdkLogOff();
	}

	/** 设置个人中心里面退出回调接口 **/
	IGPExitObsv exitFromPersonInfo = new IGPExitObsv() {

		@Override
		public void onExitFinish(GPExitResult gpExitResult) {
			/** 个人中心里面里面点击退出按钮 **/
			if (GPExitResult.GPSDKExitResultCodeExitGame == gpExitResult.mResultCode) {
				Log.i("MainActivity", "执行个人中心里面退出登录方法回调");
				MCApiFactory.getMCApi().sdkLogOff();
			}
		}
	};
	OnClickListener myOnlickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btnPay:
				mengchuang_paying(0);
				break;
			case R.id.btnExit:
				MCApiFactory.getMCApi().exit(MainActivity.this, mExitObsv);
				break;
			case R.id.login:
				MCApiFactory.getMCApi().startlogin(MainActivity.this, mUserObsv);
				break;
			case R.id.btnfloat:
				// MCApiFactory.getMCApi().showWebView(MainActivity.this);
				break;
			}
		}
	};
	// 支付结果回调
	public static payCallback payCallback = new payCallback() {
		@Override
		public void callback(int result) {
			if (result == 1) {
				// 支付成功
				return;
			}
		}
	};

	/**
	 * 登录回调接口
	 */
	private IGPUserObsv mUserObsv = new IGPUserObsv() {
		@Override
		public void onFinish(GPUserResult result) {
			switch (result.getmErrCode()) {
			case GPUserResult.USER_RESULT_LOGIN_FAIL:
				writeLog("登录回调:登录失败");
				break;
			case GPUserResult.USER_RESULT_LOGIN_SUCC:
				MCApiFactory.getMCApi().startFloating(MainActivity.this);
				// 登陆账户
				String accountNo = result.getAccountNo();
				writeLog("登录回调:登录成功");
				break;
			}
		}
	};

	/**
	 * 退出界面回调接口
	 */
	private IGPExitObsv mExitObsv = new IGPExitObsv() {
		@Override
		public void onExitFinish(GPExitResult exitResult) {
			switch (exitResult.mResultCode) {
			case GPExitResult.GPSDKExitResultCodeError:
				writeLog("退出回调:调用退出弹框失败");
				break;
			case GPExitResult.GPSDKExitResultCodeExitGame:
				writeLog("退出回调:退出操作！");
//				MCApiFactory.getMCApi().stopFloating(MainActivity.this);
//				System.exit(0);
//				finish();
				break;
			case GPExitResult.GPSDKExitResultCodeCloseWindow:
				writeLog("退出回调:调用关闭退出弹框");
//				MCApiFactory.getMCApi().stopFloating(MainActivity.this);
//				System.exit(0);
//				finish();
				break;
			}
		}
	};

	public void mengchuang_paying(int shopid) {
		// {"extendinfo":"{\"appid\":\"20003001\",\"channelkey\":\"mguwan\",\"orderid\":\"20160525153043191287\",\"DeepUserID\":\"670676\"}","md5key":"1876c6e340f1f9ab7748c50117e7b2b7","appid":"43EAF96AB72C53CFE","pay":"1","productdesc":"10钻石","channelid":"2","productprice":"1","productname":"钻石"}

		OrderInfo o = new OrderInfo();
		// 物品价格,单位元
		o.setAmount(100);
		// 游戏交易唯一ID，确定玩家信息，透传给游戏方
		// 用于确认交易给玩家发送商品
		o.setExtendInfo("这里面填写透传的信息");
		// 物品描述
		o.setProductDesc("10钻石");
		// 物品名称
		o.setProductName("钻石");
		MCApiFactory.getMCApi().pay(MainActivity.this, getFragmentManager(), o, payCallback);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent msg) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			MCApiFactory.getMCApi().exit(MainActivity.this, mExitObsv);
		}
		return false;
	}

	@Override
	protected void onResume() {
		super.onResume();
		MCApiFactory.getMCApi().startFloating(this.getApplicationContext());
	}

	@Override
	protected void onPause() {
		MCApiFactory.getMCApi().floatingIsClose = true;
		super.onPause();
	}

	@Override
	public void onStart() {
		MCApiFactory.getMCApi().floatingIsClose = false;
		super.onStart();
	}

	@Override
	public void onStop() {
		if (MCApiFactory.getMCApi().floatingIsClose) {
			MCApiFactory.getMCApi().stopFloating(MainActivity.this);
		}
		super.onStop();
	}

	public static void writeLog(String msg) {
		Log.e("pay----", msg);
	}

	public void showToast(String str) {
		Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
	};
}
